package org.ghost.quickstart.scalac.collection

import java.util.{List => JList}

import org.ghost.quickstart.scalac.traits.BaseTrait

object ListLoop extends BaseTrait {
  override def print(): Unit = {
    val list1: List[String] = List("哈哈", "hello", "world")
    val list2: List[Int] = List(1, 2, 3, 4)
    val list3: List[Nothing] = Nil
    val list4: List[List[Int]] =
      List(
        List(1, 0, 0),
        List(0, 1, 0),
        List(0, 0, 1)
      )

    //基本操作
    println("*****list基本操作")
    println("head操作:第一元素是 : " + list1.head)
    println("tail操作:返回除第一个元素之外剩余数据 : " + list1.tail)
    println("isEmpty查看列表 是否为空 : " + list1.isEmpty)
    println("reverse操作:集合数据翻转 : " + list1.reverse)
    println("mkString操作:拼接成字符串 : " + list1.mkString(","))
    println("sum操作:求和 : " + list2.sum)
    println("min操作:最小值 : " + list2.min)
    println("max操作:最大值 : " + list2.max)
    println("List.fill() 方法来创建一个指定重复数量的元素列表:")
    println("\t" + List.fill(3)("Abc"))
    println("List.tabulate() 方法是通过给定的函数来创建列表:")
    println("\t" + List.tabulate(6)(n => n * n))
    println("\t" + List.tabulate(4, 5)((a, b) => a * b))

    //list与list操作
    println("*****list与list操作")
    println("可以使用::: 运算符或 List.:::() 方法或 List.concat() 方法来连接两个或多个list")
    println(List.range(1, 10) ::: list2 ::: Nil)
    println(List.concat(List.range(1, 10), list2, Nil))

    //元素与list操作
    println("*****元素与list操作")
    println("+:给list头添加元素->" + (100 +: list2))
    println("\t+:操作之后list->" + list2)
    println("::给list头添加元素->" + (100 :: list2))
    println("\t::操作之后list->" + list2)
    println(":+给list尾添加元素->" + (list2 :+ 100))
    println("\t:+操作之后list->" + list2)

  }
}
